package cn.demoncat.util.pay.unionpay.entity;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

/**
 * 银联结果：对账文件下载
 * 
 * @author 延晓磊
 *
 * @since 2020年3月27日
 */
public class UnionpayResultFile extends UnionpayResult{

	/**
	 * 文件内容：可以保存为.zip文件
	 */
	private byte[] fileContent;
	/**
	 * 文件名称：商户号_日期.zip，例 700000000000001_20200119.zip
	 */
	private String fileName;
	/**
	 * 账单明细
	 */
	private List<Bill> bills = new ArrayList<>();

	public UnionpayResultFile() {
		super();
	}

	public UnionpayResultFile(String txnType, String respCode, String respMsg, String reqReserved) {
		super(txnType, respCode, respMsg, reqReserved);
	}

	public byte[] getFileContent() {
		return fileContent;
	}

	public void setFileContent(byte[] fileContent) {
		this.fileContent = fileContent;
	}

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public List<Bill> getBills() {
		return bills;
	}

	public void setBills(List<Bill> bills) {
		this.bills = bills;
	}

	/**
	 * 账单明细
	 * 
	 * @author 延晓磊
	 *
	 * @since 2020年4月2日
	 */
	public static class Bill{
		/**
		 * 商户号
		 */
		private String merId;
		/**
		 * 交易订单号
		 */
		private String orderId;
		/**
		 * 查询流水号
		 */
		private String queryId;
		/**
		 * 原支付查询流水号
		 * 
		 * 场景：撤销、退款时，返回原支付查询流水号
		 */
		private String origQryId;
		/**
		 * 银行卡号
		 * 
		 * 场景：支付时，返回支付银行卡号；退款时，返回到账银行卡号（同于支付银行卡）
		 */
		private String accNo;
		/**
		 * 交易金额
		 */
		private Long txnAmt;
		/**
		 * 交易手续费
		 */
		private Long txnCharge;
		/**
		 * 交易时间（支付、撤销、退款发起的时间）
		 */
		private LocalDateTime txnTime;
		/**
		 * 交易类型：TxnType
		 */
		private String txnType;
		
		public String getMerId() {
			return merId;
		}
		public void setMerId(String merId) {
			this.merId = merId;
		}
		public String getOrderId() {
			return orderId;
		}
		public void setOrderId(String orderId) {
			this.orderId = orderId;
		}
		public String getQueryId() {
			return queryId;
		}
		public void setQueryId(String queryId) {
			this.queryId = queryId;
		}
		public String getOrigQryId() {
			return origQryId;
		}
		public void setOrigQryId(String origQryId) {
			this.origQryId = origQryId;
		}
		public String getAccNo() {
			return accNo;
		}
		public void setAccNo(String accNo) {
			this.accNo = accNo;
		}
		public Long getTxnAmt() {
			return txnAmt;
		}
		public void setTxnAmt(Long txnAmt) {
			this.txnAmt = txnAmt;
		}
		public Long getTxnCharge() {
			return txnCharge;
		}
		public void setTxnCharge(Long txnCharge) {
			this.txnCharge = txnCharge;
		}
		public LocalDateTime getTxnTime() {
			return txnTime;
		}
		public void setTxnTime(LocalDateTime txnTime) {
			this.txnTime = txnTime;
		}
		public String getTxnType() {
			return txnType;
		}
		public void setTxnType(String txnType) {
			this.txnType = txnType;
		}
	} 
}
